15. BSD Unix, Part 5 - Bringing TCP/IP to BSD
- BSD Unix, Part 1 - Unix Code Goes to UC Berkeley
- BSD Unix, Part 2 - The Birth of the vi Editor
- BSD Unix, Part 3 - The Beginning of BSD Unix
- BSD Unix, Part 4 - 4.1BSD
BSD Unix, Part 5
Bringing TCP/IP to BSD

Integrating TCP/IP Code into BSD
TCP/IP emerged from collaborative research led by Vint Cerf and Bob Kahn. The Defense Advanced Research Projects Agency (DARPA) later contracted Bolt Beranek and Newman (BBN) to implement the protocols for Unix on the VAX.

At UC Berkeley, the Computer Systems Research Group (CSRG) integrated BBN's early TCP/IP code into BSD. Bill Joy and Samuel Leffler improved the code and redesigned BSD's networking architecture and interfaces to support multiple network protocols.
The TCP/IP code's finally here.
Let's put it in BSD.
This will be slow on a local network.
I'd better fix it.
A TCP/IP meeting, early 1980s
CSRG has modified BBN's TCP/IP code.
I'm told local-network performance is much better.
That's why we're here.
How's that possible?
Sorry I'm late.
I'm Bill Joy.
Just in time.
How did you make it
so much faster?
I saw room for improvement.
Local networks have more bandwidth,
so I made better use of it.
How did you implement it?
It's very simple —
you read the protocol
and write the code.
BSD's networking code was a substantial CSRG reworking of BBN's initial implementation. In 1985, during preparations for 4.3BSD, an independent evaluation compared Berkeley's code with BBN's newer version. BBN's code had strengths in congestion handling, but Berkeley's was more efficient and passed every test. DARPA chose to keep Berkeley's implementation, and 4.3BSD shipped in June 1986.

Back in 1982, Joy had left CSRG to co-found Sun Microsystems.
Finish your
work first!
Sorry, Professor.
Sam's taking over
the BSD release.
Let's build a real
Unix machine!
As he moved to Sun, Joy wrapped up work on interprocess communication (IPC) and isolated the kernel's hardware-dependent code, making BSD easier to port to other machines.
I'd better finish IPC.
SunOS will need it too...
Joy's successor, Samuel J. Leffler, implemented new signal-handling features. Adding Marshall Kirk McKusick's new filesystem and CSRG's TCP/IP improvements, he released 4.2BSD in August 1983.
New signal handling
and TCP/IP!
After completing 4.2BSD, Leffler moved to Lucasfilm. Michael J. Karels took over development.
Finish your
work first!
Sorry, Professor.
Mike's taking over
the BSD release.
Let's build the
Pixar Image Computer.
BSD's future is in your hands.
Within eighteen months of its release, more than 1,000 site licenses for 4.2BSD had been issued. TCP/IP and the new filesystem gave it features AT&T's System V lacked at the time.
Still on System V
without TCP/IP?
Try 4.2BSD.
Networking features developed in BSD later found their way into AT&T's Unix too.
Add BSD's TCP/IP
to our Unix.
You mean, from scratch?
Can you write TCP/IP
from scratch?
Uh... no. I'll use
BSD's TCP/IP code.
Note: The dialogue is dramatized, not a verbatim record of what these people said.
The TCP/IP meeting scene is a dramatization based on the recollections of John Gage, a friend of Bill Joy and former chief researcher at Sun Microsystems. BBN's Rob Gurwitz rejected the claim that BBN's code did not work. He said he had attended the relevant DARPA meetings but did not remember hearing Bill Joy say, "It's very simple — you read the protocol and write the code." (Source)
References
- Andrew Leonard, BSD Unix: Power to the people, from the code, 2000.
- Marshall Kirk McKusick, Twenty Years of Berkeley Unix, in Open Sources: Voices from the Open Source Revolution (Korean edition, Hanbit Media), 2013.
- Marshall Kirk McKusick, Twenty Years of Berkeley Unix: From AT&T-Owned to Freely Redistributable, 1999.
- Robert F. Gurwitz, VAX-UNIX Networking Support Project - Implementation Description (IEN 168), 1981.
- Computer History Museum, Internet History of 1970s.
- Pixar, Our Story.
- RFC 1122: Requirements for Internet Hosts - Communication Layers, 1989.
- Modern protocol examples: IPv6 (RFC 1883), 1995; TLS 1.0 (RFC 2246), 1999.
- Computer Systems Research Group - Wikipedia
- https://www.freebsd.org/doc/en/books/design-44bsd/overview-network-implementation.html